<meta charset="utf-8"/>
<?php
//                    函数的使用（案例）
//局部变量
 /*  function demo(){
   	   $a=100;//变量在函数内部声明，大括号内。
   }
   //可调用一次，可多次调用
   demo();//函数只有调用时才执行，每声明一次，函数执行时调用一次
   demo();//调用完一次，函数就释放一次，然后继续声明，执行。释放一个过程
   demo();//被声明几次就被调用几次，然后释放几次，所以结果输出为空

   echo $a.'<br>';//运行结果什么都没输出，为空白，说明函数变量
//                $a=100;只在函数function demo(){}开始之后和结束之
//                前能使用

   function test(){
   	 echo $a.'<br>';
   }

   test();
*/

//全局变量
  /*        $a=10;//未被调用，使用global才可以
          function demo(){
          	global $a;//global 包含 $a;
          	$a+=10;//$a=$a+10;
          	echo $a.'<br>';
        }
          echo $a.'aaaaaaa<br>';
          demo();
          echo $a.'bbbbbbb<br>';
          demo();
          echo $a.'cccccccc<br>';
          demo();

          $b=5;
          function test(){
          	  $b+=5;
          	  global $b;//加在$b+=5;后面无效，要在之前
          	  echo $b.'<br>';
          }
          echo $b.'dddddddd<br>';
          test();
          echo $b.'ffffffff<br>';
          test();
*/

//php的静态变量
 /*      function test(){
       	 static $a=0;//加static后结果输出12345
       	 $a++;
       	 echo $a.'<br>';//未加static结果输出11111
      }
       test();
       test();
       test();
       test();
       test();
*/

//变量函数
 /*                function one($a,$b){
                      return $a+$b;
                    }


                 function two($a,$b){
                      return $a*$b;
                    }

                 function three($a,$b){
                      return ($a+$b)*$a*$b;
                    }

                    $var=one;//可直接赋值
                    $var="two";//也可使用字符串
                    $var=three;
                    echo "结果：".$var(3,4)."<br>";
*/


 //引用赋值
 /*                $arr=array(1,9,5,8,3,4);
                 sort($arr);
                 print_r($arr); 

*/

//默认函数 (实参可以比形参少)     
 /*              function demo($a,$b,$c){
//       function demo($a=1,$b=2,$c=3){ //另一种：直接给初值 
                   echo "### $a ### $b ## $c ##<br>";
                }            
                
                demo();
 //             demo(1,2,3);//一种：可在此给参数传值
*/

//给第一个参数传值，后面使用默认值
/*      function demo($i,$j=10,$k=20){
           echo "&& $i && $j &&& $k &&&<br>";
       }

*/       # demo(5);//按顺序，5就传值给了$i


//带有---的参数函数（实参可以比形参多）
          // function demo(){
          //   $sum=0;
          //   for($i=0;$i<func_num_args();$i++){
          //      $sum+=func_get_arg($i);//传0时获取第一个参数,传1时获取第二个参数，以此类推.....
          //   }
          //     return $sum;
          // }

          // echo demo(1,2,3,4,5,6,7,8,9);





//回调回函
                 // function demo($x,$y){
                 //     return $x*$y;
                 //  }//第二步：声明一个叫demo的函数
                  
                 //  function test($x,$y){
                 //    return $x*$x+$y*$y;
                 //  }

                 //  function sum($a,$b,$fun){      //sum:求和
                 //     return $a+$b+$fun($a,$b);//第四步：把$x,$y传给$a,$b结果输出为：$a+$b+$a*$b=2+3+2*3=11
                 //  }//第一步：声明一个函数

                 //  echo sum(2,3,demo); //第三步：调用一个demo,把值传给$fun                  
                 //  echo '<br><br>';
                 //  echo sum(2,3,test);

        





